/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.servinf.ani.sincronizador.service;

import com.servinf.ani.mapper.ProjectMapper;
import com.servinf.ani.sincronizador.dao.ProjectDAO;
import com.servinf.ani.sincronizador.entities.Proyecto;
import com.servinf.ani.sincronizador.exception.IncompatibleTypesException;
import com.servinf.ani.sincronizador.utils.LogHelper;
import java.io.IOException;
import java.text.ParseException;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

/**
 *
 * @author mortiz
 */
@Component
public class ProjectService {
    
        private ProjectDAO projectDAO;
 
        public ProjectDAO getProjectDAO() {
            return projectDAO;
        }
        
        @Autowired
        public void setProjectDAO(ProjectDAO projectDAO) {
            this.projectDAO = projectDAO;
        }
   
        public List<Proyecto> findALl(){
            List<Proyecto> projectList = getProjectDAO().findAll();
            return projectList;
        }
        
        /**
         * Obtiene un proyecto de BD dado su id proveniente del excel.
         * @param projectOnlineId id en el excel.
         * @return 
         */
        public Proyecto findByProjectOnlineId(String projectOnlineId)  {
            return getProjectDAO().findByProjectOnlineId(projectOnlineId);
        }
        
        
        public void create(List<Object> excelProjectRow) throws IncompatibleTypesException, IOException  {
            Proyecto projectNew = ProjectMapper.excelToProject(excelProjectRow, null);
            
            if(projectNew != null) {
                 getProjectDAO().create(projectNew); //Se crea el proyecto
                 LogHelper.Log(LogHelper.INFO, "OK Proyecto Creado ", null);
                 update(excelProjectRow, projectNew); //Se actualizan las relaciones
                 LogHelper.Log(LogHelper.INFO, "Relaciones asignadas al proyecto nuevo creado con Id :  " + projectNew.getIdProyecto(), null);
                 
            }
            //getProjectDAO().update(ProjectMapper.excelToProject(excelProjectRow, projectNew));    
        }
        
        public void update(List<Object> excelProjectRow, Proyecto project) throws IncompatibleTypesException, IOException {
            if(excelProjectRow != null)  {
                Proyecto projectUpdated = ProjectMapper.excelToProject(excelProjectRow, project);
                if(projectUpdated != null) {
                    getProjectDAO().update(projectUpdated);
                    LogHelper.Log(LogHelper.INFO, "OK Proyecto Actualizado ", null);
                }
            }else {
                getProjectDAO().update(project);
                LogHelper.Log(LogHelper.INFO, "OK Proyecto Actualizado ", null);
            }
        }
        
}


